import type React from 'react';
import type { StandardProps } from '../../types/common';

export type ButtonType =
  | 'primary'
  | 'secondary'
  | 'tertiary'
  | 'warning'
  | 'danger';

export type ButtonTheme = 'light' | 'solid' | 'outline' | 'borderless';

export type ButtonSize = 'small' | 'default' | 'large';

export type HtmlType = 'button' | 'reset' | 'submit';

export interface BaseButtonProps extends StandardProps {
  /**
   * 按钮里面的内容, 可以是文字图标等
   */
  children?: React.ReactNode;

  /**
   * 按钮类型
   * @default primary
   */
  type?: ButtonType;

  /**
   *  按钮主题
   * @default light
   */
  theme?: ButtonTheme;

  /**
   * 按钮尺寸
   * @default default
   */
  size?: ButtonSize;

  /**
   * 加载中
   * @default false
   */
  loading?: boolean;

  /**
   * 是否禁用
   * @default false
   */
  disabled?: boolean;

  /**
   * 是否块级按钮(宽度100%)
   * @default false
   */
  block?: boolean;

  /**
   * 按钮的类型
   * @default button
   */
  htmlType?: HtmlType;

  /**
   * 前缀元素
   */
  prefixIcon?: React.ReactNode;

  /** 后缀元素 */
  suffixIcon?: React.ReactNode;
}

type MergedHTMLAttributes = Omit<
  React.HTMLAttributes<HTMLElement> & React.ButtonHTMLAttributes<HTMLElement>,
  // &
  // React.AnchorHTMLAttributes<HTMLElement>,
  'type' | 'color'
>;

export interface ButtonProps extends BaseButtonProps, MergedHTMLAttributes {}
// export interface ButtonProps extends BaseButtonProps {}
